<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

//引入哈希  db类
use Hash;
use DB;

class UserController extends Controller
{
   	//后台用户添加
	public function getAdd()
	{
		//显示模板
		return view('admin.user.add');
	}

	//处理表单提交添加数据
	public function postInsert(Request $request)
	{	
		//查看所有提交的数据
		// dd($request->all());

		//手动检测用户名不能为空
		// if(!$request->input('username')){
		// 	//直接返回  with向session中闪存错误信息 
		// 	return back()->with('error','用户名不能为空');
		// }

		//laravel中内置表单验证  自动闪存
		$this->validate($request, [
	       'username' => "required|regex:/\w{6,18}/",
	       'password' => 'required|regex:/\w{6,18}/',
	       'rpwd' => 'required|same:password',
	       'email' => 'required|email',
	       'phone' => 'required|regex:/1[3-8]\d{9}/',
	   	],[
	   		'username.required'=>'用户名不能为空',
	   		'username.regex'=>'用户名需要6-18位数字字母下划线',
	   		'password.required'=>'密码不能为空',	
	   		'password.regex'=>'密码需要6-18位数字字母下划线',
	   		'rpwd.required'=>'确认密码不能为空',	
	   		'rpwd.same'=>'两次密码不一致',	
	   		'email.required'=>'邮箱不能为空',
	   		'email.email'=>'邮箱格式不正确',
	   		'phone.required'=>'手机号不能为空',
	   		'phone.regex'=>'手机号格式不正确',
	   	]);

		//提取其它数据
		$data = $request->only('username','password','email','phone');
		//随机token值
		$data['token'] = str_random(21);
		//状态为1
		$data['status'] = 1;
		//加密密码
		$data['password'] = Hash::make($data['password']);
		//处理图片上传
		$data['pic'] = $this->upload($request);
		// dd($data);
		//数据插入
		$res = DB::table('users')->insert($data);
		//判断
		if($res){
			return redirect('/admin/user/index')->with('success','添加成功');
		}else{
			return back()->with('error','数据添加失败');
		}
	}

	//用户列表
	public function getIndex(Request $request)
	{	
		//获取每页显示几条
		$num = $request->input('num',10);

		//查询数据库 使用分页
		// if($request->input('keywords')){
		// 	$users = DB::table('users')->where('username','like',''.$request->input('keywords').'%')->paginate($num);
		// }else{
		// 	$users = DB::table('users')->paginate($num);
		// }

		//在laravel中高级where条件   闭包中的$query代表当前数据库对象
		$users = DB::table('users')->where(function($query) use($request){
			//判断是否有where条件
			if($request->input('keywords')){
				$query->where('username','like',''.$request->input('keywords').'%');
			}
		})->paginate($num);

		// dd($users);
		
		// 解析模板
		return view('admin.user.index',['users'=>$users,'request'=>$request->all()]);
	}

	//ajax删除用户 
	public function postAjaxdel(Request $request)
	{
		// dd($request->all());
		//接收ajax传来的id
		$id = $request->input('id');

		//执行数据删除
		$res = DB::table('users')->where('id',$id)->delete();
		if($res){
			echo 1;
		}else{
			echo 0;
		}
	}


	//显示用户修改信息
	public function getEdit(Request $request)
	{
		// dd($request->all());
		$id = $request->input('id');
		//通过id查询
		$user = DB::table('users')->where('id',$id)->first();
		// dd($user);
		//解析模板  分配变量
		return view('admin.user.edit',['user'=>$user]);
	}
	//用户修改
	public function postUpdate(Request $request)
	{
		// dd($request->all());
		$data = $request->except(['_token','uid','oldpic']);
		//处理头像修改
		$data['pic'] = $this->upload($request);
		// dd($data);
		$id = $request->input('uid');
		//执行数据修改
		$res = DB::table('users')->where('id',$id)->update($data);
		// dd($res);
		//判断
		if($res){
			return redirect('/admin/user/index')->with('success','修改成功');
		}else{
			return back()->with('error','数据修改失败');
		}
	}

	//图片上传操作
	public function upload(Request $request)
	{	
		// dd($request->all());

		//检测是否有上传文件
        if($request->hasFile('pic')){
            //文件名
            $name = md5(time()+rand(111111,8999999));
            //文件后缀名获取
            $suffix = $request->file('pic')->getClientOriginalExtension();
            $arr = ['jpg','png','gif'];
            //判断文件上传类型
            if(!in_array($suffix,$arr)){
                echo '上传文件不符合要求';die;
            }
            //将上传文件移动到指定位置
            $request->file('pic')->move('./uploads/',$name.'.'.$suffix);
            //将文件路径及文件名返回
            return '/uploads/'.$name.'.'.$suffix;
        }else{
        	//判断是不是修改头像过来的请求
        	if(!empty($request->input('oldpic'))){
        		//如果用户没有修改修改  则返回原来的头像路径
        		return $request->input('oldpic');
        	}
        }
	}
}
